Warning: mkdir(): No space left on device in /var/www/tg-me/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/machinelearning_interview/--): Failed to open stream: No such file or directory in /var/www/tg-me/post.php on line 50
Machine learning Interview | Telegram Webview: machinelearning_interview/1785 -
Telegram Group & Telegram Channel
🧩 Задача для дата-сайентистов: "Средняя зарплата" (с подвохом)

📖 Описание задачи

У вас есть DataFrame df с данными о зарплатах сотрудников компании:


import pandas as pd

data = {
'employee_id': [1, 2, 3, 4, 5, 6],
'department': ['IT', 'IT', 'HR', 'HR', 'Finance', 'Finance'],
'salary': [100000, None, 50000, None, 70000, None]
}

df = pd.DataFrame(data)
print(df)


Результат:


employee_id department salary
0 1 IT 100000.0
1 2 IT NaN
2 3 HR 50000.0
3 4 HR NaN
4 5 Finance 70000.0
5 6 Finance NaN


В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.

Вы пишете следующий код:


df['salary_filled'] = df.groupby('department')['salary'].transform(lambda x: x.fillna(x.median()))


Код выполняется без ошибок, но когда вы проверяете результат:


print(df)


Получаете:


employee_id department salary salary_filled
0 1 IT 100000.0 100000.0
1 2 IT NaN 100000.0
2 3 HR 50000.0 50000.0
3 4 HR NaN 50000.0
4 5 Finance 70000.0 70000.0
5 6 Finance NaN 70000.0


Всё вроде бы верно…

Но через неделю приходит заказчик и говорит:

> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»

📝 Вопросы:

1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN

---

🎯 Что проверяет задача:

Понимание, как median() работает на пустой серии
Понимание, что fillna(np.nan) может привести к замещению на 0 при приведении типов
Умение работать с группами, где нет данных

---

💡 Подсказка:

Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).

Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.

---

Ожидаемое правильное решение:

```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)

df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```

Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.


🔥 Дополнительный подвох (для усложнения):

Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?


📝 Вывод:

Эта задача проверяет:

Понимание нюансов заполнения пропусков в Pandas
Внимательность к corner-case ситуациям
Умение работать с группами с частично или полностью отсутствующими данными

🔥 Отличная тренировка внимательности и глубины понимания Pandas!



tg-me.com/machinelearning_interview/1785
Create:
Last Update:

🧩 Задача для дата-сайентистов: "Средняя зарплата" (с подвохом)

📖 Описание задачи

У вас есть DataFrame df с данными о зарплатах сотрудников компании:


import pandas as pd

data = {
'employee_id': [1, 2, 3, 4, 5, 6],
'department': ['IT', 'IT', 'HR', 'HR', 'Finance', 'Finance'],
'salary': [100000, None, 50000, None, 70000, None]
}

df = pd.DataFrame(data)
print(df)


Результат:


employee_id department salary
0 1 IT 100000.0
1 2 IT NaN
2 3 HR 50000.0
3 4 HR NaN
4 5 Finance 70000.0
5 6 Finance NaN


В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.

Вы пишете следующий код:


df['salary_filled'] = df.groupby('department')['salary'].transform(lambda x: x.fillna(x.median()))


Код выполняется без ошибок, но когда вы проверяете результат:


print(df)


Получаете:


employee_id department salary salary_filled
0 1 IT 100000.0 100000.0
1 2 IT NaN 100000.0
2 3 HR 50000.0 50000.0
3 4 HR NaN 50000.0
4 5 Finance 70000.0 70000.0
5 6 Finance NaN 70000.0


Всё вроде бы верно…

Но через неделю приходит заказчик и говорит:

> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»

📝 Вопросы:

1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN

---

🎯 Что проверяет задача:

Понимание, как median() работает на пустой серии
Понимание, что fillna(np.nan) может привести к замещению на 0 при приведении типов
Умение работать с группами, где нет данных

---

💡 Подсказка:

Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).

Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.

---

Ожидаемое правильное решение:

```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)

df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```

Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.


🔥 Дополнительный подвох (для усложнения):

Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?


📝 Вывод:

Эта задача проверяет:

Понимание нюансов заполнения пропусков в Pandas
Внимательность к corner-case ситуациям
Умение работать с группами с частично или полностью отсутствующими данными

🔥 Отличная тренировка внимательности и глубины понимания Pandas!

BY Machine learning Interview


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/machinelearning_interview/1785

View MORE
Open in Telegram


Machine learning Interview Telegram | DID YOU KNOW?

Date: |

What Is Bitcoin?

Bitcoin is a decentralized digital currency that you can buy, sell and exchange directly, without an intermediary like a bank. Bitcoin’s creator, Satoshi Nakamoto, originally described the need for “an electronic payment system based on cryptographic proof instead of trust.” Each and every Bitcoin transaction that’s ever been made exists on a public ledger accessible to everyone, making transactions hard to reverse and difficult to fake. That’s by design: Core to their decentralized nature, Bitcoins aren’t backed by the government or any issuing institution, and there’s nothing to guarantee their value besides the proof baked in the heart of the system. “The reason why it’s worth money is simply because we, as people, decided it has value—same as gold,” says Anton Mozgovoy, co-founder & CEO of digital financial service company Holyheld.

Can I mute a Telegram group?

In recent times, Telegram has gained a lot of popularity because of the controversy over WhatsApp’s new privacy policy. In January 2021, Telegram was the most downloaded app worldwide and crossed 500 million monthly active users. And with so many active users on the app, people might get messages in bulk from a group or a channel that can be a little irritating. So to get rid of the same, you can mute groups, chats, and channels on Telegram just like WhatsApp. You can mute notifications for one hour, eight hours, or two days, or you can disable notifications forever.

Machine learning Interview from tr


Telegram Machine learning Interview
FROM USA